package com.agua.enturno.servicios.impl;

import com.agua.enturno.persistencia.dao.PrestadorDeServiciosDAO;
import com.agua.enturno.servicios.PrestadorDeServiciosService;
import com.agua.enturno.vista.dto.AgendaDTO;
import com.agua.enturno.vista.dto.PrestadorDeServiciosDTO;
import com.agua.enturno.vista.dto.ServicioDTO;
import com.agua.enturno.vista.dto.assemblers.AgendaAssembler;
import com.agua.enturno.vista.dto.assemblers.PrestadorDeServiciosAssembler;
import com.agua.enturno.vista.dto.assemblers.ServicioAssembler;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public class PrestadorDeServiciosServiceImpl implements PrestadorDeServiciosService {

	private PrestadorDeServiciosDAO prestadorDeServiciosDAO;
	private PrestadorDeServiciosAssembler prestadorDeServiciosAssembler;
	private AgendaAssembler agendaAssembler;
	private ServicioAssembler servicioAssembler;
	
	
	/*------------------------------------ Public methods ----------------------------------*/

	@Override
	@Transactional
	public PrestadorDeServiciosDTO findById(Long prestadorDeServiciosId) {
		return prestadorDeServiciosAssembler.assemble(prestadorDeServiciosDAO.findById(prestadorDeServiciosId));
	}
	
	@Override
	@Transactional
	public List<AgendaDTO> findAgendas(Long prestadorDeServiciosId) {
		return agendaAssembler.assemble(prestadorDeServiciosDAO.findById(prestadorDeServiciosId).getAgendas());
	}
	
	@Override
	@Transactional
	public List<ServicioDTO> findServicios(Long prestadorDeServiciosId) {
		return servicioAssembler.assemble(prestadorDeServiciosDAO.findById(prestadorDeServiciosId).getServicios());
	}
	
	/*--------------------------------------------------------------------------------------*/
	/*---------------------------------- Geters and seters ---------------------------------*/

	public void setPrestadorDeServiciosDAO(PrestadorDeServiciosDAO prestadorDeServiciosDAO) {
		this.prestadorDeServiciosDAO = prestadorDeServiciosDAO;
	}

	public void setPrestadorDeServiciosAssembler(PrestadorDeServiciosAssembler prestadorDeServiciosAssembler) {
		this.prestadorDeServiciosAssembler = prestadorDeServiciosAssembler;
	}

	public void setAgendaAssembler(AgendaAssembler agendaAssembler) {
		this.agendaAssembler = agendaAssembler;
	}

	public void setServicioAssembler(ServicioAssembler servicioAssembler) {
		this.servicioAssembler = servicioAssembler;
	}
	
	/*--------------------------------------------------------------------------------------*/

}
